package com.ys.extend.utils;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;

/**
 * 工具类
 * @author wdj
 *
 */
public class CommonUtils {

	/**
	 * 获取客户端真实的IP
	 * @param request
	 * @return
	 */
     public static String getRemoteIp(HttpServletRequest request) {
         String ip = request.getHeader("X-Forwarded-For");
         if(StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
             //多次反向代理后会有多个ip值，第一个ip才是真实ip
             int index = ip.indexOf(",");
             if(index != -1){
                 return ip.substring(0,index);
             }else{
                return ip;
            }
        }
         
        ip = request.getHeader("X-Real-IP");
        if(StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
           return ip;
        }
        
        ip = request.getRemoteAddr();
        
        return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
   }
     
 	/**
 	 * 获取客户端IP
 	 * @param request
 	 * @return
 	 */
 	public static String getRemoteHostIP(javax.servlet.http.HttpServletRequest request){
 	    String ip = request.getHeader("x-forwarded-for");
 	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
 	        ip = request.getHeader("Proxy-Client-IP");
 	    }
 	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
 	        ip = request.getHeader("WL-Proxy-Client-IP");
 	    }
 	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
 	        ip = request.getRemoteAddr();
 	    }
 	    return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
 	}
     
}
